#include "lvgl/lvgl.h"
#include "button.h"

void create_a_button(void)
{
  // 1. 创建一个按钮对象，父对象是当前活动屏幕（lv_scr_act()）
  lv_obj_t *btn = lv_btn_create(lv_scr_act());

  // 2. 设置按钮的大小和位置（方法A：绝对坐标）
  lv_obj_set_size(btn, 100, 50); // 宽度 100px, 高度 50px
  lv_obj_set_pos(btn, 10, 10);   // 位置 x=10, y=10

  // 2. 设置按钮的大小和位置（方法B：更推荐 - 使用布局，如居中）
  // lv_obj_set_size(btn, 100, 50);
  // lv_obj_center(btn);

  // 3. 为按钮添加一个标签（Label）
  lv_obj_t *label = lv_label_create(btn);
  lv_label_set_text(label, "Click Me!");
  lv_obj_center(label); // 让标签在按钮内部居中

  // 4. 为按钮添加一个事件回调函数
  lv_obj_add_event_cb(btn, button_event_callback, LV_EVENT_ALL, NULL);
}

// 按钮的事件回调函数
void button_event_callback(lv_event_t *e)
{
  lv_event_code_t code = lv_event_get_code(e); // 获取触发的事件代码
  lv_obj_t *btn = lv_event_get_target(e);      // 获取触发事件的对象

  if (code == LV_EVENT_CLICKED)
  {
    // 当按钮被点击时，执行这里的代码
    LV_LOG_USER("Button was clicked!");

    // 例如，可以改变按钮标签的文字
    lv_obj_t *label = lv_obj_get_child(btn, 0); // 获取第一个子对象（即标签）
    if (label)
    {
      lv_label_set_text(label, "Clicked!");
    }
  }
}
